package example.商场收银系统.v3;

import src.example.商场收银系统.v3.CashNormal;
import src.example.商场收银系统.v3.CashRebate;
import src.example.商场收银系统.v3.CashSuper;

/**
 * 策略模式与简单工厂模式的结合
 * （简单工厂模式不一定就是一个单独的类，主要是用于解决创建对象）
 *
 * 但是此时还是需要加大量的case
 *  所以这时我们就可以使用反射来做，
 */
public class Context2 {

    private CashSuper cashSuper;

    public Context2(String type){
        switch (type){
            case "打八折":
                this.cashSuper=new CashRebate(0.8);
                break;
            case "正常收费":
                this.cashSuper=new CashNormal();
                break;
        }
    }

    public double getResult(Integer num, double price){
        return cashSuper.getTotalPrice(num,price);
    }
}
